A memory system typically includes a master device, such as a processor or memory controller, and a plurality of integrated circuit memory devices for storing data. An integrated circuit memory device typically includes a plurality of storage cells, arranged in an array or memory bank, for storing data. The integrated circuit memory device may include a plurality of memory banks.
Data is written to and read from the integrated circuit memory device in response to one or more commands included in read and/or write transactions between the integrated circuit memory device and the master device. For example, data is generally transferred from one or more memory banks to a plurality of sense amplifiers in response to an ACTIVATE (ACT) command on a control interconnect. The data may then be transferred from the plurality of sense amplifiers to an integrated circuit memory device interface and onto a data interconnect in response a READ (RD) command on the control interconnect.
Data stored in the plurality of storage cells is typically accessed from one row of storage cells at a time. An accessible row of storage cells is typically referred to as “a page.” A page may be accessed from one or more memory banks in one or more integrated circuit memory devices. A column address, which may be included in a request packet or with a command from the master device, is often provided to an integrated circuit memory device to access data from a page selected by a row address. The latency or time required to access data from an already selected page is generally lower than the latency to access data from a page that must be first selected.
In certain memory system applications, a large number of memory banks (or large bank count) and small page sizes may be desirable while in other memory system applications a relatively smaller number of memory banks and larger pages sizes are desirable. For example a computational application, such as a general-purpose computer, blades or servers, typically has a large number of integrated circuit memory devices and a large number of memory banks to support multiple software applications and threads. In this type of system, the integrated circuit memory devices are often placed on memory modules. A set of integrated circuit memory devices on one or more memory modules (for example, all of the devices on two modules, all of the devices on one module, half of the devices on one module, or half of the devices on each of two modules) are further grouped into a rank of devices. A rank of devices responds together to read and write commands. By having multiple integrated circuit memory devices respond to each read and write command, memory bandwidth can be increased for reads and write transactions. Typically, pages span all the integrated circuit memory devices in a rank, resulting in “physical” page sizes that can be very large. Physical pages may end up being larger than an operating system's page size. In some situations, smaller per integrated circuit memory device page sizes are desirable in order to allow the aggregate page size that spans the rank of devices to match an operating system's page size so that performance is increased, and power consumption can be reduced. In contrast, systems with a lot of graphics processing, such as a game consoles, high-definition televisions, or television set top boxes typically have a relatively small number of integrated circuit memory devices and memory banks. In these systems, it can often be desirable to have large per integrated circuit memory device page sizes so that the aggregate page size that spans the rank of devices is large enough to provide good performance and lower power consumption. Because systems designers and end-users can benefit from having the same integrated circuit memory device used in multiple applications, it is desirable to have an integrated circuit memory device support multiple page sizes.
Accordingly, it is desirable to have a memory system, in particular an integrated circuit memory device that meets the various operational or application needs of an end-user.
In addition, it is desirable to have a memory system that is backwards compatible. For example, a graphics application of a memory system should be able to execute older game software requiring a particular memory bank count and page size to match the timing and execution characteristics of the older memory system, while also being able to execute newer game software that takes advantage of a different memory system having a different memory bank count and page size. Likewise, an integrated circuit memory device should be able to operate with different types of memory controllers having different types of operating system software (older and newer versions) that access different numbers of memory banks and/or page sizes.